//
//  QSWebJSMessageHandler.swift
//  TestSwift
//
//  Created by Song on 2018/7/3.
//  Copyright © 2018年 Song. All rights reserved.
//

import UIKit
import WebKit

class QSWebJSMessageHandler: NSObject, WKScriptMessageHandler {
    // 单例
    static var share : QSWebJSMessageHandler {
        struct Static {
            static let instance : QSWebJSMessageHandler = QSWebJSMessageHandler()
        }
        return Static.instance
    }
    
    /// webView重定向
    ///
    /// - Parameters:
    ///   - url: 跳转的url
    ///   - scheme: 跳转的scheme
    /// - Returns: 是否允许跳转，拦截操作后，一般要设置为.cancel
    func qs_redirectionUrl(_ url: URL, scheme: String) -> WKNavigationActionPolicy {
        // 系统的方法可通过scheme来判断
        if scheme.elementsEqual("tel") {
            // 拨打电话
            if #available(iOS 10, *) {
                UIApplication.shared.open(url, options: [ : ], completionHandler: { (success) in
                })
            } else {
                UIApplication.shared.openURL(url)
            }
            
            return .cancel
        }
        
        // 其他的一些操作，可通过url.path来判断
        
        return .allow
    }
    
    // MARK: - WKScriptMessageHandler
    /// JS交互
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
//        // "NativeMethod"需要与userContent.add(self, name: "NativeMethod")中相同
//        if message.name == "NativeMethod" {
//            if message.body as! String == "first" {
//                // 可根据body的值调用相应的方法
//                print(message.body)
//            }
//        }
    }
    
    // MARK: - Private Methods
}
